home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NetNews Offline 2
/
NetNews Offline Volume 2.iso
/
news
/
comp
/
std
/
c
/
740
< prev
next >
Wrap
Internet Message Format
|
1996-08-06
|
2KB
Path: solon.com!not-for-mail
From: Casper.Dik@Holland.Sun.COM (Casper H.S. Dik - Network Security Engineer)
Newsgroups: comp.std.c,comp.lang.c.moderated
Subject: Re: printf() format extensions - looking for beta testers...
Date: 14 Apr 1996 10:57:17 -0500
Organization: Sun Microsystems, Netherlands
Sender: clc@solutions.solon.com
Approved: clc@solutions.solon.com
Message-ID: <4kr78t$kao@solutions.solon.com>
References: <4kgljv$l2p@solutions.solon.com> <4klicn$ndl@solutions.solon.com>
NNTP-Posting-Host: solutions.solon.com
Ari Lukumies <aril@cmt.lpr.mail.carel.fi> writes:
> > format('!', bangcvt);
> >
> > /* do something which can generate an error */
> > fprintf(stderr, "%s: %!\n", "open failed");
> > }
>Given the above, how about calls like (well, not a pretty one, but you get the
>idea...):
> fprintf(stderr, "%-*.2!", something);
Yes, it seems that the format call back function (bangcvt) should take
a number of flags (leading 0/- found, precision, maximum width) and
a generic way to make the user defined format specifier output characters,
as it can be called from functions like "snprintf", which limit the output.
Passing a buffer to but the output in doesn't strike me as sufficient;
if "bangcvt" can have unlimited output, it must be possible for the
mechanism to cater for that.
And, of course, you want a input conversion as well :-)
So instead of:
> > int bangcvt(va_list *ap, char *s, int len, fmtspec *f) {
You'd get something more like:
bangcvt (va_list *ap, int flags, int width, int precision,
char fmt, int (*putit)(char c, void *output), void *output)
(Where you call "putit" for each character of output with *output
as magic for the call back)
Casper
--
Expressed in this posting are my opinions. They are in no way related
to opinions held by my employer, Sun Microsystems.
Statements on Sun products included here are not gospel and may
be fiction rather than truth.